<template>
  <div>
    <UploadExcel :before-upload="beforeUpload" :on-success="onSuccess" />
  </div>
</template>

<script>
import { formatDate } from '@/utils'
import { reqImportEmployee } from '@/api/employees'
export default {
  // 该组件作用：
  // 1.获取UploadExcel组件解析的Excel数据
  // 2.转换为接口需要的数据格式
  // 3.掉接口导入数据
  name: 'ImportExcel',
  methods: {
    // =========== 用于文件上传前的检测,如果该函数返回false,就阻止上传
    beforeUpload (file) {
      console.log(file);
      return true
    },
    // =========== 这里的data是解析Excel后的数据
    async onSuccess (data) {
      const arr = this.translateData(data.results)
      try {
        const { code, message } = await reqImportEmployee(arr)
        if (code === 10000) {
          this.$message.success(message)
          this.$router.push('/employees')
        } else {
          this.$message.success(message)
        }
      } catch (error) {
        this.$message.error('批量导入员工失败')
      }
    },
    // =========== 将解析后的数据转换为后端需要的数据
    translateData (results) {
      // 1.处理中文和属性的映射关系
      const userRelations = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }
      // 2.
      const ary = []
      results.forEach(item => {
        const obj = {}
        for (const key in item) {
          // 把每一个属性更换为英文
          const name = userRelations[key]
          const value = item[key]
          if (['timeOfEntry', 'workNumber'].includes(name)) {
            obj[name] = formatDate(value)
          } else {
            obj[name] = value
          }
        }
        ary.push(obj)
      });
      return ary
    },
  }
}
</script>

<style>
</style>
